Java的问题```
来源:百度知道 编辑:UC知道 时间:2024/06/04 22:06:36
比如S类中 一个方法。
A read()
{
A b = new A();
return b;
}
这样
A a = s.read();
A a = s.read();这个read方法肯定是返回了A的一个实例对象的引用才可以赋值A的一个引用的
java中有类,对象是类的实例化,对象是在堆内存中分配,一旦new一个对象,就会调用其构造方法,创建这个对象,然后堆内存中分配其成员变量,因为对象是在堆内存,所以,他肯定有一个内存地址,我们把这个地址赋值给A类型的变量a,这个是在对堆栈分配的,因为它是局部变量,引用的传递就是把对象的地址来回传递,一般都是赋值给一个本类型的变量就可以了,,当然也可以赋给父类,这可能就涉及到多态了
A a = s.read();像这种就是赋值.意思是A类型的对象a,引用了s.read();A类型的对象a,是s.read()的返回值类型.
你的理解是对的,只有用new关键字的才是实例化对象.
A a=new A();是最基础的实例初始化方法.
A a=s.read();的前提是s.read的返回的是一个类A的实例,这段代码才成立
对象的含义就是一个类的某一个实例,比如:我们每个人就是人类的一个对象.如前文叙述a就是类A的一个对象.
引用传递是指java对于非基本类型(基本类型包括int double等类型)也就是对象的传递方式,这个争论比较多,有人说java的传值方式针对基本类型和对象是不同的,基本类型采用的是传值,对象采用的是传引用;也有说法是java无论基本类型还是对象都是采用传值方式,个人更倾向于后者.
不用new也可以实例化的:A a = (A)Class.ForName("package.A").newInstance();
实例可以有多种方式的啊,1,new;2,newInstance3,调用赋值方式从其他方法中返回一个实例化对象。
A a=s.read()就属于后者,s.read这个方法的返回值类型就是一个类实例。